/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ec.edu.espe.ccsoft.mantenimiento.bean;

import ec.edu.espe.ccsoft.mantenimiento.modelos.Proveedor;
import ec.edu.espe.ccsoft.mantenimiento.modelos.Repuesto;
import ec.edu.espe.ccsoft.mantenimiento.servicios.*;
import ec.edu.espe.ccsoft.mantenimiento.utils.ManejoAcciones;
import ec.edu.espe.ccsoft.mantenimiento.utils.Mensajes;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.context.RequestContext;

/**
 *
 * @author Gerardo
 */
@ManagedBean
@ViewScoped
public class RepuestoBean extends ManejoAcciones implements Serializable {
    @EJB
    private RepuestoServicio repuestoServicio;
    
    private Repuesto repuesto;
    private Proveedor proveedor;
    
    private List<Repuesto> repuestos;
    
    
    private Mensajes mensaje;
    
     @PostConstruct
    public void init() {
        repuestos = repuestoServicio.FindAllRepuestos();
        
        mensaje = new Mensajes();
    }

    public void cargarNuevo() {
        repuesto = new Repuesto();
        super.nuevoRegistro();
    }

    public void cargarModificar() {
        super.modificarRegistro();
    }

    public void cargarDetalle() {
        super.detallesRegistro();
    }

    public void guardar() {
        try {
            List<Proveedor> proveedores = new  ArrayList<>();
            proveedores.add(proveedor);
            repuesto.setProveedorList(proveedores);
            repuesto.setEstado(true);
            repuesto.setFechaCreacion(Calendar.getInstance().getTime());
            repuestoServicio.CreateRepuesto(repuesto);
            repuestos.add(repuesto);
            mensaje.addMessageSuccefull("Información", "El Repuesto ha sido creada con éxito");
            RequestContext.getCurrentInstance().execute("PF('dlDialogVar').hide();");
            RequestContext.getCurrentInstance().update("@form");
        } catch (Exception e) {
            mensaje.addMessageError("Error", "Error al crear el Repuesto " + e.getMessage());
        }
    }

    public void modificar() {
        try {
            repuestoServicio.UpdateRepuesto(repuesto);
            if(!repuesto.getEstado()){
                repuestos.remove(repuesto);
                mensaje.addMessageSuccefull("Información", "El Repuesto ha sido eliminada con éxito");
            }
            else{
                mensaje.addMessageSuccefull("Información", "La ciudad ha sido modificada con éxito");
            }
            RequestContext.getCurrentInstance().execute("PF('dlDialogVar').hide();");
            RequestContext.getCurrentInstance().update("@form");
        } catch (Exception e) {
            mensaje.addMessageError("Error", "Error al crear el Repuesto " + e.getMessage());
        }
    }

    public Repuesto getRepuesto() {
        return repuesto;
    }

    public void setRepuesto(Repuesto repuesto) {
        this.repuesto = repuesto;
    }

    public List<Repuesto> getRepuestos() {
        return repuestos;
    }

    public void setRepuestos(List<Repuesto> repuestos) {
        this.repuestos = repuestos;
    }

    public Mensajes getMensaje() {
        return mensaje;
    }

    public void setMensaje(Mensajes mensaje) {
        this.mensaje = mensaje;
    }

    public Proveedor getProveedor() {
        return proveedor;
    }

    public void setProveedor(Proveedor proveedor) {
        this.proveedor = proveedor;
    }
    
    
}
